package com.whli.autumn.mall.wms.domain.dto;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.ToString;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.math.BigDecimal;

/**
 * <p>库存操作参数</p>
 *
 * @author whli
 * @version 1.0.0
 * @since 2023/5/1 10:47
 */
@ApiModel(description = "库存操作参数")
@Data
@ToString(callSuper = true)
public class StockActionDTO implements Serializable {

    @ApiModelProperty(value = "出入库类型", hidden = true)
    @NotNull(message = "出入库类型不能为空")
    private String actionType;

    @ApiModelProperty(value = "来源仓库")
    private String fromWarehouseInfoId;

    @ApiModelProperty(value = "来源仓库编码")
    private String fromWarehouseInfoCode;

    @ApiModelProperty(value = "来源仓库名称")
    private String fromWarehouseInfoName;

    @ApiModelProperty(value = "来源库区")
    private String fromWarehouseAreaId;

    @ApiModelProperty(value = "来源库区编码")
    private String fromWarehouseAreaCode;

    @ApiModelProperty(value = "来源库区名称")
    private String fromWarehouseAreaName;

    @ApiModelProperty(value = "来源库位")
    private String fromWarehouseLocationId;

    @ApiModelProperty(value = "来源库位编码")
    private String fromWarehouseLocationCode;

    @ApiModelProperty(value = "来源库位描述")
    private String fromWarehouseLocationName;

    @ApiModelProperty(value = "来源仓库分类（字典项-->warehouse_category）")
    private String fromWarehouseCategory;

    @ApiModelProperty(value = "来源仓库属性（字典项-->warehouse_property，-1-不合格 0-待验 1-合格）")
    private String fromWarehouseProperty;

    @ApiModelProperty(value = "目的仓库")
    private String toWarehouseInfoId;

    @ApiModelProperty(value = "目的仓库编码")
    private String toWarehouseInfoCode;

    @ApiModelProperty(value = "目的仓库名称")
    private String toWarehouseInfoName;

    @ApiModelProperty(value = "目的库区")
    private String toWarehouseAreaId;

    @ApiModelProperty(value = "目的库区编码")
    private String toWarehouseAreaCode;

    @ApiModelProperty(value = "目的库区名称")
    private String toWarehouseAreaName;

    @ApiModelProperty(value = "目的库位")
    private String toWarehouseLocationId;

    @ApiModelProperty(value = "目的库位编码")
    private String toWarehouseLocationCode;

    @ApiModelProperty(value = "目的库位描述")
    private String toWarehouseLocationName;

    @ApiModelProperty(value = "目的仓库分类（字典项-->warehouse_category）")
    private String toWarehouseCategory;

    @ApiModelProperty(value = "目的仓库属性（字典项-->warehouse_property，-1-不合格 0-待验 1-合格）")
    private String toWarehouseProperty;

    @ApiModelProperty(value = "商品信息")
    @NotBlank(message = "商品信息不能为空")
    private String productId;

    @ApiModelProperty(value = "商品分类")
    @NotBlank(message = "商品分类不能为空")
    private String productCategory;

    @ApiModelProperty(value = "商品编号")
    @NotBlank(message = "商品编号不能为空")
    private String productCode;

    @ApiModelProperty(value = "商品名称")
    @NotBlank(message = "商品名称不能为空")
    private String productName;

    @ApiModelProperty(value = "商品规格")
    private String productSpec;

    @ApiModelProperty(value = "商品型号")
    private String productModel;

    @ApiModelProperty(value = "商品单位")
    @NotBlank(message = "商品单位不能为空")
    private String productUnit;

    @ApiModelProperty(value = "商品批号")
    @NotBlank(message = "商品批号不能为空")
    private String batchNo;

    @ApiModelProperty(value = "客户批号")
    private String customBatchNo;

    @ApiModelProperty(value = "商品条码")
    @NotBlank(message = "商品条码不能为空")
    private String snNo;

    @ApiModelProperty(value = "库存数量")
    @NotNull(message = "数量不能为空")
    private BigDecimal stockQty;

    @ApiModelProperty(value = "来源单号")
    private String sourceOrderNo;

    @ApiModelProperty(value = "业务单号")
    private String businessOrderNo;

    @ApiModelProperty(value = "业务类型（字典项-->warehouse_business_type）")
    private String businessType;

    @ApiModelProperty(value = "备注")
    private String remark;

}
